home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / JMLCSamples / Integrate.p < prev    next >
Encoding:
Text File  |  1994-08-31  |  841 b   |  40 lines  |  [TEXT/MPS ]

  1. PROGRAM Integrate;
  2.  
  3.   USES Clock;
  4.  
  5.   CONST
  6.     epsilon = 1E-8;
  7.   VAR
  8.     result: Double;
  9.     count: LONGINT;
  10.  
  11.   FUNCTION f(x: Double): Double;
  12.   BEGIN
  13.     f:=((x/7+2)*x+1.5)*x+2
  14.   END; {f}
  15.  
  16.   FUNCTION Simpson(a, b: Double; FUNCTION F(x: Double): Double): Double;
  17.     VAR
  18.       i, n: LONGINT;
  19.       s, ss, s1, s2, s4, h: Double;
  20.   BEGIN
  21.     n:=2; h:=(b-a)*0.5;
  22.     s1:=h*(f(a)+f(b)); s2:=0; s4:=4*h*f(a+h); s:=s1+s2+s4;
  23.     REPEAT
  24.       ss:=s; n:=2*n; h:=h*0.5;
  25.       s1:=0.5*s1; s2:=0.5*s2+0.25*s4; s4:=0; i:=1;
  26.       REPEAT
  27.         s4:=s4+f(a+i*h); i:=i+2
  28.       UNTIL i>n;
  29.       s4:=4.0*h*s4; s:=s1+s2+s4
  30.     UNTIL ABS(s-ss)<epsilon*ABS(s);
  31.     Simpson:=s/3
  32.   END; {Simpson}
  33.  
  34. BEGIN
  35.   ClockInit; ClockStart; count:=1;
  36.   REPEAT
  37.     result:=Simpson(0, 10, f); count:=count+1
  38.   UNTIL count>100000;
  39.   Write(ClockStop DIV 1000:1)
  40. END. {Integrate}